package com.fpmsa.officeweb.controller;

import com.fpmsa.officeweb.constant.OWConstant;
import com.fpmsa.officeweb.core.base.controller.BaseController;
import com.fpmsa.officeweb.model.News;
import com.fpmsa.officeweb.service.INewsCategoryService;
import com.fpmsa.officeweb.service.INewsService;
import com.fpmsa.officeweb.service.INewsThemeService;
import com.fpmsa.officeweb.service.OfficeWebService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.*;

/**
 * @Auther: Huang Yuehong
 * @Description:
 * @Date: 2018/6/20 13:37
 */
@Controller
@RequestMapping("/about")
public class AboutController extends BaseController {

    private String PREFIX = "templates/about/";

    @Autowired
    private INewsService newsService;

    @Autowired
    private OfficeWebService officeWebService;

    /**
     * 跳转到协会概况页面
     */
    @RequestMapping("")
    public String about(HttpServletRequest request, Model model) {

        // 获取协会概况文章（类别为“协会概况”）,按时间降序排列
        List<News> newsList = officeWebService.getNumNewsByCategory(OWConstant.OW_ASSOCIATION_STATUS,1,false);
        model.addAttribute("situationNews",newsList.get(0));

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_ASSOCIATION_STATUS);

        // 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about.html";
    }

    /**
     * 跳转到核心发起人页面
     */
    @RequestMapping("/founder")
    public String founder(HttpServletRequest request,Model model) {

        // 获取新闻列表（类别为“核心发起人”）
        List<News> founderList = officeWebService.getNumNewsByCategory(OWConstant.OW_CORE_FOUNDER,null,false);
        model.addAttribute("founderList",founderList);

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_CORE_FOUNDER);

        /// 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about_founder.html";
    }


    /**
     * 跳转到协会领导页面
     */
    @RequestMapping("/leader")
    public String leader(HttpServletRequest request,Model model) {

        List<News> leaderList = officeWebService.getNumNewsByCategory(OWConstant.OW_LEADER,null,false);
        model.addAttribute("leaderList",leaderList);

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_LEADER);

        // 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about_leader.html";
    }

    /**
     * 跳转到协会章程页面
     */
    @RequestMapping("/rules")
    public String rules(HttpServletRequest request,Model model) {

        // 获取协会章程文章
        List<News> ruleNewsList = officeWebService.getNumNewsByCategory(OWConstant.OW_RULES,1,false);
        model.addAttribute("ruleNews",ruleNewsList.get(0));

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_RULES);

        // 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about_rules.html";
    }

    /**
     * 跳转到组织文化页面
     */
    @RequestMapping("/culture")
    public String culture(HttpServletRequest request,Model model) {

        // 获取"组织文化"文章
        /*List<News> cultureNewsList = officeWebService.getNumNewsByCategory(OWConstant.OW_CULTURE,1,false);
        model.addAttribute("cultureNews",cultureNewsList.get(0));*/

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_CULTURE);

        // 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about_culture.html";
    }

    /**
     * 跳转到资质荣誉页面
     */
    @RequestMapping("/honor")
    public String honor(HttpServletRequest request,Model model) {

        // 获取新闻列表（类别为“资质荣誉”）,按orderval升序排列
        List<News> honorList = officeWebService.getNewsOrderByVal(OWConstant.OW_HONOR,null,true);
        model.addAttribute("honorList",honorList);

        // 格式化create_time字段
        /*List<Map<String,Object>> lawMapList = officeWebService.formatCreateTime(lawList,"yyyy-MM-dd");
        model.addAttribute("lawMapList", lawMapList);*/

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_HONOR);

        // 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about_honor.html";
    }

    /**
     * 跳转到组织机构页面
     */
    @RequestMapping("/org")
    public String org(HttpServletRequest request,Model model) {

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_ORG);

        // 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about_org.html";
    }

    /**
     * 跳转到大事记页面
     */
    @RequestMapping("/history")
    public String history(HttpServletRequest request,Model model) {

        // 用来判断页面上将左边选中的菜单文字设置成蓝色（class=on）
        model.addAttribute("flagname",OWConstant.OW_HISTORY);

        // 往页面的model对象里面添加“关键词”、“描述”、“title”、下拉框选项等属性,用request判断请求的来源（pc/移动端/微信端）
        officeWebService.addAttrForModel(request,model);

        return PREFIX + "about_history.html";
    }

    /**
     * 跳转到大事记页面
     */
    @RequestMapping("/loadhistory/{year}")
    public String loadhistory(@PathVariable Integer year) {

        // 获取对应年份条件下有数据的“年月”
        //List<Date> ymList = newsService.getYearAndMonth(year);

        List<Map<String, Object>> historyMapList = newsService.getHistories(year);

        List<String> yms = new ArrayList<>();
        for (Map map : historyMapList){
            yms.add((String) map.get("ym"));
            HashSet h = new HashSet(yms);
            yms.clear();
            yms.addAll(h);
        }

        // 存放最后的结果
        Map resultMap = new HashMap();

        for (String ym : yms){
            List<Map<String,Object>> mapList = new ArrayList<>();
            for (Map map : historyMapList){
                if (ym.equals(map.get("ym"))){
                    mapList.add(map);
                    resultMap.put(ym,mapList);
                }
            }
        }

        return PREFIX + "about_history.html";
    }

}
